#include "GatherDataHandlerMemory.h"
#include "stdio.h"

/*
1.如果温度检测连续十次都不正常（可能故障）让心跳任务里面的led停止闪烁

*/
u8 times=0;
extern int heartState;//来源于心跳模块
TarGatherData targetData;
u8 clearData(const GatherData *source ){
if (source->temp>200)
{
    times++;
    if (times>10)
    {
        heartState=0;
        return 0;
    }
    return 1;
}else{
//设备正常
    heartState=1;//让工作灯正常闪烁
    times=0;//累积的次数清零
    return 0;
}
}
void processData(const GatherData *source){
targetData.humi=source->humi;
targetData.temp=source->temp;
targetData.smoke=source->smoke/40;
targetData.sunshine=100-(source->sunshine/40);
targetData.raidrop=source->raidrop;
}


/*
对原始数据进行加工处理
数据清洗：对数据的检查，校验，清洗错误的数据
*/
void dataHandler(GatherData *source){
//非空判断
if (source==NULL)
{
    printf("gather task error \r\n");
    return;
}


//数据清洗
u8 res =clearData(source);
if (res)return;//采集的数据如果不正常 就不继续往下工作
//如果心跳状态不正常就不向下执行
if (heartState==0)return;
//对数据进行加工处理
processData(source);
//如果数据要远程存储
//调用http请求发送数据


}